home *** CD-ROM | disk | FTP | other *** search
- From: argv@zipcode.com (Dan Heller)
- Newsgroups: comp.sources.misc
- Subject: v18i058: mush - Mail User's Shell, Part01/22
- Message-ID: <1991Apr21.024715.11028@sparky.IMD.Sterling.COM>
- Date: 21 Apr 91 02:47:15 GMT
- Approved: kent@sparky.imd.sterling.com
- X-Checksum-Snefru: c9fbc6f5 2be4af73 8a7c0cca 2498eb05
-
- Submitted-by: Dan Heller <argv@zipcode.com>
- Posting-number: Volume 18, Issue 58
- Archive-name: mush/part01
- Supersedes: mush: Volume 12, Issue 28-47
-
- This is release 7.2.2 of the Mail User's Shell (mush), a "Mail User
- Agent" (MUA) that is designed to manage electronic mail on most UNIX
- systems. That is, mush is used by users to read mail, sort it, edit
- it, delete it, or use it to act as an interface to send mail to others.
-
- --
- Dan Heller
- O'Reilly && Associates Z-Code Software Comp-sources-x:
- Senior Writer President comp-sources.x@uunet.uu.net
- argv@ora.com argv@zipcode.com
-
- #!/bin/sh
- # This is a shell archive (produced by shar 3.49)
- # To extract the files from this archive, save it to a file, remove
- # everything above the "!/bin/sh" line above, and type "sh file_name".
- #
- # made 04/16/1991 21:49 UTC by kent@sparky.IMD.Sterling.COM
- #
- # existing files will NOT be overwritten unless -c is specified
- #
- # This is part 1 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- #
- # This shar contains:
- # length mode name
- # ------ ---------- ------------------------------------------
- # 3198 -rw-r--r-- Gnurc
- # 2035 -rw-r--r-- Mailrc
- # 5560 -rw-r--r-- Mushrc
- # 28505 -rw-r--r-- README
- # 15679 -rw------- README-7.0
- # 11036 -rw-r--r-- README-7.1
- # 8799 -rw-r--r-- README-7.2.0
- # 4503 -rw-r--r-- README-7.2.2
- # 33326 -rw-r--r-- addrs.c
- # 4976 -rw-r--r-- advanced.mushrc
- # 20663 -rw-r--r-- bind.c
- # 2970 -rw-r--r-- bindings.h
- # 43712 -rw-r--r-- cmd_help
- # 13555 -rw-r--r-- command2.c
- # 22758 -rw-r--r-- commands.c
- # 1933 -rw-r--r-- compose.icon
- # 6407 -rw-r--r-- config.h-dist
- # 18325 -rw-r--r-- curs_io.c
- # 28914 -rw-r--r-- curses.c
- # 15621 -rw-r--r-- dates.c
- # 3468 -rwxr-xr-x digestify
- # 24153 -rw-r--r-- doproc.c
- # 4196 -rw-r--r-- execute.c
- # 4685 -rw-r--r-- expr.c
- # 14503 -rw-r--r-- file.c
- # 1717 -rw-r--r-- fkeys.c
- # 20079 -rw-r--r-- folders.c
- # 19617 -rw-r--r-- glob.c
- # 2071 -rw-r--r-- glob.h
- # 13462 -rw-r--r-- hdr_sw.c
- # 22622 -rw-r--r-- hdrs.c
- # 13558 -rw-r--r-- init.c
- # 7206 -rw-r--r-- lock.c
- # 34934 -rw-r--r-- loop.c
- # 9279 -rw-r--r-- macros.c
- # 57669 -rw-r--r-- mail.c
- # 1933 -rw-r--r-- mail.icon.1
- # 1933 -rw-r--r-- mail.icon.2
- # 8757 -rw-r--r-- main.c
- # 2096 -rw-r--r-- makefile.bsd
- # 1735 -rw-r--r-- makefile.hpux
- # 2454 -rw-r--r-- makefile.sun
- # 2023 -rw-r--r-- makefile.sys.v
- # 2293 -rw-r--r-- makefile.xenix
- # 11289 -rw------- malloc.c
- # 22738 -rw-r--r-- misc.c
- # 7659 -rw-r--r-- misc_frame.c
- # 28895 -rw-r--r-- msgs.c
- # 191116 -rw-r--r-- mush.1
- # 23670 -rw-r--r-- mush.h
- # 8816 -rw-r--r-- options.c
- # 1248 -rw-r--r-- options.h
- # 22092 -rw-r--r-- panels.c
- # 17697 -rw-r--r-- pick.c
- # 5154 -rw-r--r-- print.c
- # 6535 -rw-r--r-- sample.mushrc
- # 21221 -rw-r--r-- setopts.c
- # 12425 -rw-r--r-- signals.c
- # 8699 -rw-r--r-- sort.c
- # 10202 -rw-r--r-- strings.c
- # 1396 -rw-r--r-- strings.h
- # 16831 -rw-r--r-- tool.c
- # 18926 -rw-r--r-- tool_help
- # 9136 -rw-r--r-- tooledit.c
- # 194 -rw-r--r-- version.h
- # 18782 -rw-r--r-- viewopts.c
- #
- if test -r _shar_seq_.tmp; then
- echo 'Must unpack archives in sequence!'
- echo Please unpack part `cat _shar_seq_.tmp` next
- exit 1
- fi
- # ============= Gnurc ==============
- if test -f 'Gnurc' -a X"$1" != X"-c"; then
- echo 'x - skipping Gnurc (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting Gnurc (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'Gnurc' &&
- # .mushrc to simulate Gnu emacs (NOT Rmail!) for curses mode
- # -- Bart Schaefer (schaefer@cse.ogc.edu)
- #---------------------------------------------------------------------------
- # Shortcomings:
- # In compose mode, can't use C-h, C-r, C-w, DEL, etc.
- # Ought to delete most of the default bindings. If you want remove the
- # default bindings, you can:
- # Run "mush -noinit" and do a "saveopts";
- # Edit the saved file and change every "bind" to an "unbind";
- # Remove all other extranous commands;
- # Include the resulting list at the TOP of this file.
- #---------------------------------------------------------------------------
- #
- set no_reverse
- #
- # TTY setup -- you may want to customize this, because the old interrupt
- # character and so on might not be reset correctly when mush exits.
- #
- cmd ntty 'stty intr ^G dsusp undef stop undef start undef lnext undef'
- cmd rtty 'stty intr ^C dsusp ^Y stop ^S start ^Q lnext ^V'
- cmd exit 'rtty; \exit'
- cmd xit exit
- cmd x exit
- cmd quit 'update; exit'
- cmd q quit
- cmd curses 'ntty; \curses; rtty'
- #
- # Curses mode bindings
- #
- # Exiting -- try to make sure tty gets reset
- bind-macro '\CX\CC' '[line-mode]exit\n'
- bind-macro x [no-op]
- bind-macro X [no-op]
- bind-macro q [no-op]
- bind-macro Q [no-op]
- # Files (folders)
- bind '\CX\CF' folder
- bind '\CX\CS' update
- bind-macro '\CXi' '[line-mode]merge '
- bind '\CX\CV' folder
- bind-macro '\CX\CW' '[save-list]*\n'
- # Help
- bind '\CX\CH' help # Can't use just C-h, it's a prefix of the others
- bind-macro '\CHa' '[bind]_\n\n\CH' # List all curses commands
- bind-macro '\CHc' '[line-mode]bind ' # Show one binding
- bind-macro '\CHf' '[line-mode]? ' # Explain line-mode function
- # Error Recovery -- very primitive, sorry
- bind '\CXu' undelete-list
- bind '\C_' undelete-list
- # Searching -- sorry, can't be incremental
- # also can't repeat with same key
- bind '\CS' search-next
- bind '\CR' search-back
- # Motion (the important part)
- bind '\CB' back-msg
- bind '\Eb' back-msg
- bind '\CP' back-msg
- bind '\CF' next-msg
- bind '\Ef' next-msg
- bind '\CN' next-msg
- bind '\Ea' back-msg
- bind '\Ee' next-msg
- bind '\E[' top-page
- bind '\E]' bottom-page
- bind '\CX[' screen-back
- bind '\CX]' screen-next
- bind '\E<' first-msg
- bind '\E>' last-msg
- bind '\CV' screen-next
- bind '\Ev' screen-back
- # Killing/deleting ("forward", i.e. at cursor, only)
- bind '\CD' delete
- bind '\Ed' delete
- bind '\CK' delete
- bind '\Ek' delete
- bind-macro '\CW' '[line-mode]delete [getstr] | set kill\n[no-op]'
- bind-macro '\CY' '[undelete-list]$kill\n'
- # Marking -- somewhat limited because can't use C-SPC (C-@)
- bind-macro '\CX\CX' '[line-mode].|set mark\n[no-op]'
- bind-macro '\Eh' '[line-mode]h|set mark\n[no-op]'
- bind-macro '\CXCP' '[line-mode]h|set mark\n[no-op]'
- bind-macro '\CXh' '[line-mode]*|set mark\n[no-op]'
- # Buffers -- treated same as folders
- bind '\CXb' folder
- bind-macro '\CX\CB' '[folder]?\n\CH' # List folders and back out
- bind-macro '\CXk' '[delete-list]*\n'
- # Shells
- bind-macro '\E!'\
- X '[line-mode]rtty\n[shell-escape][getline][line-mode]ntty\n'
- bind-macro '\Ex!' '[line-mode]rtty;sh\n[line-mode]ntty\n'
- # Macros
- # Sorry, no appending to macros, and end with <RETURN> not `C-x )'
- bind '\CX(' bind-macro
- #
- # Lastly, actually reset the tty
- #
- if iscurses
- X ntty
- endif
- SHAR_EOF
- chmod 0644 Gnurc ||
- echo 'restore of Gnurc failed'
- Wc_c="`wc -c < 'Gnurc'`"
- test 3198 -eq "$Wc_c" ||
- echo 'Gnurc: original size 3198, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= Mailrc ==============
- if test -f 'Mailrc' -a X"$1" != X"-c"; then
- echo 'x - skipping Mailrc (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting Mailrc (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'Mailrc' &&
- # .mushrc to cause Mush to emulate UCB Mail
- # -- Bart Schaefer (schaefer@cse.ogi.edu)
- #
- # This file can be used as either the DEFAULT_RC or the ALT_DEF_RC (see
- # config.h) but such use is NOT recommended. Instead, you should modify
- # one of those files to "source" this file.
- #
- #----------------------------------------------------------------------------
- # Shortcomings:
- # Mush does not support the "noisy phone line" flags of Mail
- # (-i command line option or "set ignore" to ignore RUBOUT characters)
- # Mush will never remove a system mailbox (no "unset keep" equivalent)
- # See comments below on (lack of) command prefix recognition
- #----------------------------------------------------------------------------
- #
- # Set up prompting, headers
- #
- set prompt='& '
- set mil_time date_received
- set hdr_format='%8.80a %D %M %-2N %5T %l/%c "%.29s"'
- #
- # Set up mailing/replying miscellaneous
- #
- set indent_str = " "
- set reply_to_hdr auto_route
- #
- # Set up command interface
- # Note that a full emulation is difficult, because Mush does not support
- # command prefix recognition (e.g., Mail interprets "Rep" as "Reply").
- #
- # Don't barf if history doesn't work, but still do cmd expansion
- #
- set nonobang
- #
- # This stuff is fine, but really needs prefix recognition.
- #
- cmd Reply replysender
- cmd R replysender
- cmd alt alternates
- cmd chdir cd
- cmd chd cd
- cmd + next
- cmd ch cd
- cmd c copy
- cmd file folder
- cmd fi folder
- cmd hold preserve
- cmd ho hold
- cmd reply replyall
- cmd r replyall
- cmd retain "set show_hdrs='\!*'" # Not quite right, but ...
- cmd se set
- cmd shell sh
- cmd so source
- cmd u 'u \!* | pick -1 | from -' # "u" changes current message in Mail
- cmd un u
- cmd undelete u
- cmd unread 'flags \!* +U' # "unread" is undocumented in Mail
- cmd uns unset
- cmd vi v
- cmd z 'z \!* + | from -' # "z" changes current message in Mail
- cmd z+ z
- cmd z- 'z \!* -'
- #
- # You may want this file sourced, especially if you are not using the
- # supplied Mushrc file as your DEFAULT_RC.
- #
- # set ALT_DEF_RC = "/usr/lib/Mail.rc"
- # source $ALT_DEF_RC
- # unset ALT_DEF_RC
- SHAR_EOF
- chmod 0644 Mailrc ||
- echo 'restore of Mailrc failed'
- Wc_c="`wc -c < 'Mailrc'`"
- test 2035 -eq "$Wc_c" ||
- echo 'Mailrc: original size 2035, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= Mushrc ==============
- if test -f 'Mushrc' -a X"$1" != X"-c"; then
- echo 'x - skipping Mushrc (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting Mushrc (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'Mushrc' &&
- # Mushrc -- suggested /usr/lib/Mushrc init file for Mush
- # Copyright (c) 1989 by Bart Schaefer and Dan Heller
- #
- # Set these variables as they are set in config.h
- # (assumes that this file is DEFAULT_RC from config.h)
- set \
- X MAILRC = ".mushrc" \
- X ALTERNATE_RC = ".mailrc" \
- X ALT_DEF_RC = "/usr/lib/Mail.rc"
- X
- # Set up the display early to allow quick exit in headers-only mode.
- # The hdrs_only flag is true if the command line was: "mush -H".
- # The variable hdr_format is set to change the format of the header
- # summaries that are displayed.
- if hdrs_only
- X set hdr_format='%22a %M %-2N %5T %.33s'
- X exit # Quits reading this file
- else
- X set hdr_format='%22a %M %-2N %5T (%3.5l li) %.25s'
- endif
- X
- # Set the prompt to show current time, name of the current folder,
- # current message number, and count of total messages.
- set prompt="(%T) %f: #%m of %t> "
- X
- # Hitting <CR> should do nothing (helps make mush more shell-like). If
- # newline is not set, hitting <CR> prints the next message (like Mail).
- # This variable could be set to any mush command.
- set newline
- X
- # When reading messages, don't bother looking at lengthy, boring headers.
- ignore message-id received via status priority
- X
- # Since mush has csh-like history, you might find it annoying to type
- # things like "mail host\!host1\!host2\!user" from within the mush shell.
- # Setting nonobang will prevent the "unknown event" and allow the !'s to
- # be typed without having to be preceded by backslashes.
- set nonobang
- X
- # By default, mush's history is set to the last command only. Set it to
- # remember the last 100 commands.
- set history = 100
- X
- # If the variable "unix" is set, then any command that isn't a mush command
- # will execute the command as if you typed it from the shell. Note, such
- # commands will not go through another shell -- this is it. This may be
- # considered confusing for new users, so it is commented out by default.
- # set unix
- X
- # When you use the -i option to reply, or use the ~i tilde escape in a letter
- # when in compose mode, the current message will be included in your text.
- # Put a nice wrapper around those included messages. Here, show the author's
- # name and the subject of his letter, label the end, and add a trailing blank
- # to separate each inclusion and make finding the end easier.
- set pre_indent_str='On %M %N, %T, %.50n wrote:\n} Subject: %.65s'
- set indent_str='} ' # actual message text is preceded by a "}"
- set post_indent_str='}-- End of excerpt from %.50n\n'
- X
- # Label replies with a header showing the who, what, and when of the
- # message being replied-to.
- set in_reply_to='%f\n\t"%s" (%d)'
- X
- # Mail routing and address-fixing conveniences. If auto_route is set, then
- # replies to messages take a closer look at the addresses of the recipients.
- # If any redundant paths are present, they are pruned. Also, the path that
- # precedes any hosts listed in the "known_hosts" list is truncated. This is
- # useful for uucp sites only, and is therefore commented out by default.
- # set auto_route known_hosts="sun ucbcad well unicom"
- X
- # The curses mode allows the screen to be set up like a full screen editor.
- # There are basic "curses commands" which are bound to keyboard key-sequences
- # (usually one character). The user can rebind these keys to suit his tastes.
- # Note that the binding for R below removes the binding of reply-all.
- #
- set curses_help # Unset this to remove help message in curses.
- bind \n display # Hit return to display the next message.
- bind e macro "[line-mode]edit\n" # Quick edit from curses.
- bind P macro "[line-mode]Print\n" # Show me all the headers.
- X
- # "cmd" is used to set command line aliases similar to the way "csh"
- # does it. The only difference is that "alias" is a reserved word in
- # Mush and Mail, so cmd is used.
- #
- cmd dq 'd \!*; q' # Delete a message list, then quit.
- cmd unread 'flags \!* U O' # Mark messages unread.
- cmd : curses # Colon now "toggles" curses mode.
- X
- # Read the alternate system init file in addition to this file
- source $ALT_DEF_RC
- unset ALT_DEF_RC
- X
- # Mush tries to read ~/.mushrc first, then it tries ~/.mailrc. If .mushrc
- # is found, .mailrc is normally not read. Source the contents of .mailrc
- # as well in case there are Mail aliases that are set there.
- if -e $HOME/$MAILRC
- X if -e $HOME/$ALTERNATE_RC
- X source $HOME/$ALTERNATE_RC
- X endif
- endif
- unset ALTERNATE_RC
- X
- # The rest of this file demonstrates how sysadmins with novice users
- # might want to set things up.
- X
- if -e $HOME/.mushexpert
- X set quiet
- X exit
- endif
- if ! -e $HOME/.mushuser
- X echo "I see you've never used the Mush program before."
- X echo "I'll set some special flags to help you out."
- X echo "After you've used Mush a few times, you can type the command:"
- X echo ""
- X echo " expert"
- X echo ""
- X echo "and the flags will no longer be set unless you put them"
- X echo "in your $HOME/$MAILRC file."
- X echo ""
- X sh touch $HOME/.mushuser # Use sh in case $unix is not set.
- X if $?quiet
- X unset quiet # Show the help message on startup.
- X endif
- endif
- # At this point some helpful variables should be set. See the list above,
- # marked as "helpful for new users", for suggestions.
- #
- # Create the "expert" command mentioned in the message above.
- cmd expert 'sh touch $HOME/.mushexpert'
- X
- # These variables are helpful for new users:
- # ask -- always prompt for Subject: of mail
- # ignoreeof -- ignore end-of-file from keyboard
- # verify -- query that all is well before sending mail
- # warning -- report miscellaneous possible problems
- set ask verify warning
- set ignoreeof="echo 'Use "'"'quit'"'" to quit.'"
- SHAR_EOF
- chmod 0644 Mushrc ||
- echo 'restore of Mushrc failed'
- Wc_c="`wc -c < 'Mushrc'`"
- test 5560 -eq "$Wc_c" ||
- echo 'Mushrc: original size 5560, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= README ==============
- if test -f 'README' -a X"$1" != X"-c"; then
- echo 'x - skipping README (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting README (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'README' &&
- /* @(#)README (c) copyright 9/15/89 (Dan Heller) */
- X
- Author:
- X Dan Heller
- X
- Network addresses:
- X argv@sun.com argv@monet.berkeley.edu.
- X argv@garp.mit.edu dheller@ucbcory.berkeley.edu
- X
- When sending mail, mail to the addresses in the order given.
- X
- Contained is the source for "Mail User's Shell" (MUSH), a "Mail User
- Agent" (MUA) that is designed to manage electronic mail on most UNIX
- systems. That is, mush is used by users to read mail, sort it, edit
- it, delete it, or use it to act as an interface to send mail to others.
- A Mail Transport Agent (MTA) is the program which mush communicates with
- that actually -delivers- mail.
- X
- Mush is copyright (c) 1986, 1987, 1988, 1989, 1990, 1991 by Dan Heller.
- All Rights Reserved. This software is not in the public domain.
- X
- Redistribution of the unmodified source code is permitted as long as all
- copyright notices remain intact and all other identifying notices remain
- in the code and in the binary. This includes message headers on outgoing
- mail and the startup message. Future releases may extract the release
- version from the message headers of mush-originated messages to aid in
- implementing features and providing backwards compatibility with previous
- versions. Modification of the source for personal use is permitted.
- Modifications sent to the authors are humbly accepted and it is their
- perogative to make the mods official. Only the "official" sources may be
- redistributed and no sale of the code or any part thereof is permitted
- without written consent from the authors. Further, no part of the code
- may be used in any other product, free or otherwise, without consent from
- the authors.
- X
- With that out of the way...
- X
- Mush runs on various flavors of unix. To build mush, you should identify
- which unix you are running:
- X
- X Sun (all versions from 3.5 and higher).
- X BSD (versions 4.2 and up, or SunOS earlier than 3.5)
- X System-V / Version 7 / System III (Bell Labs)
- X Xenix (this might be tricky)
- X
- You will need to copy "config.h-dist" to config.h and edit it to reflect
- the system dependencies described there. These consist of "compile-time
- definitions and macros."
- X
- When it comes to "compile-time definitions", you may use one of two methods:
- X
- X #define DEFINITION /* in the config.h file */
- X -DDEFINITION /* in your makefile */
- X
- If the definition is of the form MACRO="string", then use:
- X
- X #define MACRO string
- X -DMACRO=string
- X
- Note that if you use definitions in the makefile, you should remove the
- corresponding definitions from config.h -- if you do not, the config.h
- definitions will override the -D definitions. The compiler will usually
- print a warning message if this happens, but the result will still be wrong.
- X
- ---------------
- Which makefile to use:
- X
- If you are on a Sun Workstation:
- X
- X makefile.sun applies only to suns and creates a binary called "mush."
- X If the binary ends in "tool", then the graphics (suntools) mode will be
- X used by default on invocation. Otherwise, you must specify -t for
- X toolmode on sun workstations. The SUNTOOL define is used in the
- X makefile.sun in order to compile the suntools version. You DO need
- X to be running SunView; old SunWindows (2.0+) no longer works. Be sure
- X to follow the notes in the makefile.sun for SunOS-4.0 machines.
- X
- X If you know that you're not going to use the suntools mode then you
- X should use makefile.bsd so that SUNTOOL won't be defined and unnecessary
- X files will not be compiled so the binary will be smaller.
- X
- X Whether or not you define SUNTOOL, you should define one of SUN_3_5,
- X SUN_4_0, or SUN_4_1 depending on your SunOS version. If SUNTOOL is
- X the only thing defined, SUN_4_1 will be used. If your version of
- X SunOS is older than 3.5, you can't use SUNTOOL, so go to makefile.bsd.
- X
- X You may also choose to define NO_WALK_MENUS to disable walking menus
- X for file names selectable from the "folder" and "save" command items.
- X
- If you are on a BSD UNIX machine:
- X
- X You should use the makefile.bsd makefile.
- X
- If you are using XENIX:
- X
- X There is one makefile for xenix: makefile.xenix. However, SCO-xenix
- X runs on either 80286 or 80386 architectures. This makefile has been
- X tuned for SCO's version of xenix. This does not mean that it won't
- X work under other xenix versions -- however, some changes may have to
- X be made by hand. If your xenix release is sco-xenix 2.2 or higher
- X then you must define USG. The libraries to use may be -ltinfo instead
- X of -lcurses -ltermlib. This is because the curses package may use
- X termio instead of the sgtty data structure. If you want to use termio
- X anyway, even if you're on an older xenix system (that supports termio),
- X then you may define USG anyway.
- X
- X Follow the hints in the makefile.xenix for compiling for 286 systems
- X or 386 systems. It is *very likely* that the CFLAGS will have to be
- X modified -- specifically, the model size and the stack size options.
- X You should be very familiar with your xenix to know how to tune this
- X properly.
- X
- If you are on a System-V Bell labs machine:
- X
- X makefile.sys.v is for unix machines that are not running any flavor of
- X BSD and probably running a system-v flavor of unix -- this defines USG
- X so that termio will be used.
- X
- X SCO UNIX V.2.0 users should add -lx to OTHERLIBS in makefile.sys.v.
- X It may also be desirable to change MANDIR to /usr/man/man.C and
- X MANEXT to C in the makefile. SCO UNIX V.3.2 users should avoid -lx
- X like the plague, and should define DIRECTORY and SELECT instead.
- X
- X MicroPort sys-v users should probably remove the -O compiler option
- X from the makefile, and may have trouble with the msg_bit() macro
- X defined in mush.h. It should be fairly trivial to generate an
- X equivalent function.
- X
- If you are using Ultrix:
- X
- X Start with makefile.bsd.
- X
- X For Ultrix 2.2, change LIBES in makefile.bsd from
- X LIBES= -lcurses -ltermlib
- X to
- X LIBES= -lcurses -ltermcap
- X
- X For Ultrix V3.0, use the standard makefile.bsd LIBES, but add
- X -DSIGRET=void
- X to the CFLAGS, or add
- X #define SIGRET void
- X to config.h (see discussion below).
- X
- If you are using HP-UX:
- X
- X Use makefile.hpux.
- X
- X Versions 6.5 and 7.0 of HP-UX (not to be confused with the same
- X version numbers of Mush) have the Berkeley-style directory access
- X libraries. Those using older versions should omit -DDIRECTORY
- X from the CFLAGS. This will cause the portable directory access
- X routines in that file to be compiled.
- X
- If you are using Apple A/UX:
- X
- X Use makefile.sys.v, and add -DAUX -DDIRECTORY to CFLAGS.
- X
- X Mush uses 4.2-BSD compatible signal handling when AUX is defined.
- X
- If you are using a hybrid BSD/SysV system:
- X
- X You may have to use a combination of many of the defines listed
- X throughout this file. You may also have to add additional libraries
- X to the LIBS= in the appropriate makefile. For example, to use the
- X bsd system calls such as select(), getwd(), the directory reading
- X routines ... you may have to define additional parameters such as
- X -DSELECT, -DGETWD, -DDIRECTORY, ... and possibly add -lbsd.
- X
- Notes for some hybrid systems:
- X SGI workstations:
- X Silicon Graphics Iris workstations should add -DDIRECTORY to prevent
- X the portable directory routines from being compiled in.
- X
- X You may optionally add -DSELECT if you want to use the BSD style
- X select() function. If you do this, you must also add -lbsd to the
- X LIBS macro definition in the Makefile.
- X You will also need to #include <sys/times.h> in curs_io.c.
- X
- X MIPS workstations:
- X These are also hybrid systems that may require additional hand-
- X configuration in order to work properly. There seem to be
- X major differences between the last several releases, so your
- X milage may vary. Currently, lock.c should be compiled with BSD
- X defined, but everything else should be SYSV. -DGETWD should be
- X used and -lbsd may have to be added to LIBS in the Makefile.
- X
- When you decide on an appropriate makefile, _copy_ it to a new file called
- Makefile _before_ making any of local changes. Please read the following
- sections for addtional configuration information. In addition to changing
- compilation options as appropriate, you should examine the rules for the
- "install:" target. Running "make" will NOT use this target by default;
- it is provided for your convenience only.
- ---------------
- X
- Your Mail Transport Agent:
- Sendmail:
- X Mush was originally designed to use sendmail as the Mail Transport Agent.
- X However, other MTA's will work. The MTA you use should be defined in
- X config.h under the MAIL_DELIVERY macro define. By default,
- X /usr/lib/sendmail -i
- X is used -- the option, -i, tells sendmail not to accept "." on a line
- X by itself as an end-of-file marker. This has been obsleted by "-oi",
- X but "-i" still works and is backwards compatible with older sendmails.
- X
- Delivermail:
- X Some mailers such as delivermail and MMDF use special strings to separate
- X messages stored in a folder. Older delivermail versions would use "^C".
- X Whatever your system uses, if it is NOT "From " (just the first 5 chars
- X on a line matching "From "), then this string should be defined in
- X config.h with the MSG_SEPARATOR macro.
- X
- MMDF:
- X NOTE: MMDF sites can define MMDF and not worry about MSG_SEPARATOR. See
- X config.h-dist if you run MMDF.
- X
- X Since MMDF can deliver users' mail in their home directories, there is
- X a define to specify this option: -DHOMEMAIL
- X
- X Since MMDF uses its own libraries to do file locking, you should add the
- X appropriate library to the LIBS list in your makefile.
- X
- X MMDF sites should probably NOT define PICKY_MAILER (see below).
- X
- All others:
- X Chances are, your MTA uses the "From " format to separate messges in
- X a folder. This includes, /bin/mail, rmail, smail, execmail, and so on.
- X Unless you *know* otherwise, assume this to be the case with your MTA.
- X
- X If no MSG_SEPARATOR is specified, what mush looks for is a pattern of
- X From <string> <date format>
- X The "string" is usually the return address of the sender and the date
- X format is supposed to be in ctime(3) format. Even still, some MTAs
- X don't conform completely to this standard and vary slightly in
- X implementation. The function load_folder() (which reads in messages)
- X contains a scanf which looks for this format to verify that this is
- X indeed a new message being scanned. If you install mush and find that
- X you are entering a shell, but mush indicates there are no messages in
- X the folder, it could be that you have a weird "From " line format and
- X the scanf() call needs to be either modified or removed.
- X
- X Machines that use mail transfer agents that *do not* use a colon-less
- X "From " line as a message separator should #define in config.h the string
- X MSG_SEPARATOR. Since this string is usually control characters, you
- X need to specify actual ascii values for those characters. Users of MMDF,
- X for example, may use "\001\001\001\001" since some mmdf versions use four
- X control-A's to separate messages. This message separator assumes that
- X there is a carriage return at the end of the string. Systems that use
- X sendmail need not concern themselves with this define. MSG_SEPARATOR
- X should not contain a newline, except for MMDF. The MSG_SEPARATOR must
- X match a complete line; a prefix will not work.
- X
- #defines specifically for your MTA:
- X
- MSG_SEPARATOR
- X See the discussion above.
- X
- UUCP
- X This should be defined if your MTA does not automatically create a
- X From: header *and* your machine talks to other computers via uucp.
- X If defined, the From: line created specifies the user's address in
- X UUCP format (host!user). Otherwise, arpa format is used (user@host).
- X Also, return addresses generated from RFC822 route specs will be put
- X in UUCP format with a complete path.
- X
- MTA_EXIT
- X The exit code of a successful delivery of a message by your MTA.
- X This is typically 0, but MMDF sites should define 9 (see config.h-dist).
- X
- NO_COMMAS
- X If your mailer does *NOT* like commas between addresses (smail sites,
- X xenix and sys-v machines), then you should define NO_COMMAS. Otherwise,
- X you will get mailer-daemon [type] messages back when trying to send mail
- X to multiple users. Sendmail should not normally need this, but early
- X versions of SunOS 4.1 were shipped with a broken sendmail configuration
- X and require NO_COMMAS anyway.
- X
- VERBOSE_ARG
- X If your mailer does NOT have a verbose option, then you should not have
- X VERBOSE_ARG defined. Otherwise, define it to be whatever the verbose
- X argument is for your mailer. The default is -v.
- X
- METOO
- X Sendmail uses the -m argument to say, "metoo" -- when sending to sendmail
- X aliases (e.g. mailing lists), sendmail will expand the alias, but if your
- X address appears in the expansion, you are excluded from getting your own
- X mail. However, if you have the variable metoo set with your variables,
- X then the METOO argument is passed to sendmail to say, "I know I'm on this
- X mailing list, but send me a copy of my message even tho I sent it." For
- X sendmail, this is -m. If your mailer uses something else, then define
- X METOO_ARG in the config.h file. If you don't have it (sys-v), then this
- X should not be defined.
- X
- PICKY_MAILER
- X Most RFC822 compliant mailers (sendmail) will add the headers From:
- X and Date: on outgoing mail. If the user or UA sends these headers,
- X most MTAs will not append them automatically. However, there are
- X certain MTAs which will not allow this -- these "picky mailers" will
- X precede such headers with a '>' and make the headers very ugly and
- X somewhat redundant or contradictory. It's hard to determine whether
- X or not your MTA will do this without actually sending mail to yourself.
- X However, it is advised to set this *unless* your mailer is not RFC822-
- X compliant (used to be defined by OLD_MAILER in previous mush releases).
- X
- X PICKY_MAILER should NOT normally be defined when MMDF is defined.
- X
- DOT_LOCK
- X Different systems use different locking mechanisms. By default,
- X mush uses one of flock(), locking(), or lockf() (depending on your
- X system). Some systems use a file called the same name as the file
- X you're locking with an appended ".lock" at the end (some Xenix's use
- X /tmp/$USER.mlk). If you define DOT_LOCK, mush will first check for the
- X .lock file. If it exists, mush loops until it goes away and then mush
- X creates it mode 600. Regardless of whether you use dot-locking, mush
- X will continue to try to use flock(), or whatever.
- X
- X Dot-locking requires mush to have write access to the directory where
- X your mailbox exists. Normally, this directory isn't writable by the
- X average user, so to do this you may have to sgid mush to the group id
- X of the owner of that directory. Mush will get the effective gid at the
- X beginning of the program and immediately reset it to your real gid until
- X the time it needs to lock the file occurs. It changes back to the sgid,
- X locks, then returns to normal. There shouldn't be a security problem.
- X
- X If you don't know what any of this means, ignore DOT_LOCK.
- X
- X Another warning is that some MTA's don't even follow their own protocol.
- X System V, it has been reported, creates the .lock file without checking
- X to see if it exists (therefore ruining someone else's lock).
- X
- ---------------
- Signals:
- X
- SIGRET
- X When signals occur in unix, the program can identify a function to be
- X called whenever a specific signal interrupts the process. That function
- X returns one of two types in unix: int and void. Because the return value
- X of this function is always ignored, many unix systems are converting
- X their definition of this function from int to void. Mush has a define:
- X SIGRET which defines what the function should return.
- X
- X By default, SIGRET is defined to be "int", except for SunOS4.0, where
- X it is defined to be "void".
- X
- X Some System-V, some Ultrix and some Xenix machines should also define
- X SIGRET to be void. If you don't know, leave it alone. If you guess
- X wrong, you will get compiler "warnings" on lines that read:
- X on_intr();
- X off_intr();
- ---------------
- Memory allocation:
- X
- INTERNAL_MALLOC
- X Mush depends on the xfree() function to detect invalid pointers, so
- X that they will not be incorrectly passed to free(). Some system
- X organizations make this very difficult, if not impossible. 80286-based
- X machines in certain memory models, AT&T 3b2s and 3b15s, and others have
- X these difficulties; VAX, Sun, Sequent, Apollo, and most 680x0 and many
- X 80386-based machines do not. Changes have been made to xfree() to
- X handle the AT&T machines, but if you aren't sure about your machine,
- X or if you get unexpected segmentation faults, define INTERNAL_MALLOC.
- X SysV users may want to define this anyway, because the internal malloc
- X may be faster than the default malloc(3).
- X
- X By default, INTERNAL_MALLOC is undefined.
- X
- ---------------
- Miscellaneous defines:
- X
- TIMEZONE
- X If this is defined, the string it is defined to is used as your timezone
- X regardless of what the system thinks your timezone is. This is intended
- X for systems which have no functions for determining the timezone. On
- X newer Gould BSD 4.3 systems, it is safe to use
- X #define TIMEZONE T->tm_zone
- X On other systems, it is better to define TIMEZONE as a string, e.g.
- X #define TIMEZONE "PST" /* Or "-0800" for international */
- X
- DAYLITETZ
- X This should be defined to your Daylight Savings Time timezone string if
- X and only if you also define TIMEZONE (above). Do not define this if you
- X use the Gould tm_zone.
- X
- USA
- X If you are in the United States of America or nearby parts of North
- X America and you want your timezones to be generated as three-letter
- X acronyms (EST, CDT, etc.) you can define USA. Otherwise, generated
- X timezones will be expressed as offsets from Universal Time (GMT).
- X It is recommended that you avoid defining USA. Mush will do its best
- X to comprehend TLA timezones on incoming mail, regardless of USA.
- X
- VPRINTF
- X This should be defined if your system has the vprintf functions. You
- X *have* these functions if you are running:
- X o system V
- X o xenix
- X o Sun release 3.0 or higher.
- X o BSD 4.3-tahoe, 4.3-reno, or 4.4.
- X If you are still not sure, try the following command from your shell:
- X
- X % ar t /lib/libc.a | grep 'v.*printf'
- X
- X If you have it, you'll probably get something like
- X vprintf.o
- X vsprintf.o
- X as output. If you don't have it, you won't have any output. If your
- X main C-libraries are not in /lib/libc.a, then find where they are and
- X try the same command using that file. BSD machines before 4.3-tahoe
- X do not have vprintf().
- X
- GETWD
- X This should be defined if your system uses the getwd() system call, as
- X opposed to getcwd(), and your system is not a BSD system (e.g. MIPS).
- X
- ---------------
- The sprintf() function:
- X If you *know* your system's sprintf returns a char *, you can remove the
- X #define sprintf Sprintf
- X in strings.h. Careful, not all BSD4.3 machines are alike! If you don't
- X know for sure, don't change this define.
- X
- ---------------
- Regular expression defines:
- X Some systems have regcmp/regex as their regular expression matching
- X routines while others have re_comp/re_exec -- If you have regcmp,
- X you should define REGCMP so that you will use the routines regcmp()
- X and regex() as the regular expression composer/parser. REGCMP should
- X normally be defined for xenix and System-V Unix. If you don't have
- X REGCMP defined, then the routines re_comp() and re_exec() are used
- X (this is the default for mush).
- X
- X Note that some systems do not have either set of routines in the default
- X libraries. You must find the library to use and add it to the list of
- X libraries to use. If this is the case, your link will fail with the
- X errors that regex and re_comp are undefined functions. Read your man
- X page for regex(3) to find where to locate those libraries.
- X
- ---------------
- The Berkeley directory(3) routines:
- X If your system has directory access routines compatible with BSD Unix
- X (opendir, readdir, closedir) you should define DIRECTORY in either the
- X makefile or config.h. This is already reflected in the makefile.hpux.
- X See the notes above for other Sys-V-ish systems that may require this.
- X If DIRECTORY is not defined, replacement routines in glob.c are used.
- X
- ---------------
- The select() function call:
- X Mush uses select() to implement macros, mappings and bindings. If your
- X system is a BSD system, then this is defined for you. However, with the
- X advent of hybrid bsd/sys-v systems, you may not be able to set BSD, but
- X you know you still have select() --for such systems, define SELECT in
- X your makefile or in config.h. For example, SGI systems require this.
- X
- X Newer xenix machines have this as so some system-v machines. If you don't
- X define one of BSD or SELECT, mush will use another function although not
- X as optimal as select().
- X
- ---------------
- The default Mushrc startup file:
- X A default mushrc should be installed, containing local configuration
- X information (aliases or variable settings). This can also provide
- X first-time users with a more friendly interface. UCB mail's default
- X Mail.rc works, but no default file works also. The location of the
- X default file should be defined in config.h. To have no default Mushrc,
- X set the default to /dev/null.
- X
- X The Mushrc file supplied with the mush distribution is heavily commented
- X and uses several of mush's features in setting up the interface. THIS
- X FILE IS NOT INTENDED TO BE USED WITHOUT LOCAL MODIFICATIONS! If you
- X use this file, you should modify it so settings of the variables MAILRC,
- X ALTERNATE_RC, and ALT_DEF_RC correspond to the definitions in your
- X config.h file. You should also examine and possibly delete the help
- X section for new users (creates the .mushuser/.mushexpert files), which is
- X included mainly as an example. The Mushrc is designed to source the
- X ALT_DEF_RC, which is usually equivalent to the UCB mail Mail.rc. This
- X eases the transition to mush for UCB sites, and allows aliases and
- X settings that should apply to both mush and mail to reside in a single
- X file. UUCP sites may also want to uncomment the line which sets the
- X auto_route and known_hosts variables; be sure to modify known_hosts to be
- X an accurate list of your UUCP mail neighbors.
- X
- X Important Note to sys-v'ers who can't get their hostname from utsname(2)
- X (xenix, more?), the hostname should probably be set in the default Mushrc
- X defined in config.h. set hostname=whatever
- X
- X If your system has a LAN or UUCP name returned by gethostname(3) and
- X an additional network mail (domain) name, you probably want to add the
- X domain name to the value of hostname. set hostname="domain $hostname"
- X (where "domain" is your local domain name). Sometimes, the domain name
- X is listed among the alternate names for the machine, which mush is able
- X to look up, but will not be the first name mush finds. Since mush uses
- X the first name listed in $hostname when constructing From: lines and
- X the like, you may need to use a "set" in Mushrc to rearrange the list.
- X
- X For sun systems, the sun Mail Mailrc (/usr/lib/Mailrc) does not work
- X very well because sun's Mail is not standard /usr/ucb/Mail. For this
- X reason, sun for many years did not change the default Mail.rc, which
- X still resides in /usr/lib/Mail.rc (note this has the "." whereas the
- X other file does not). The default config.h-dist reflects this. In
- X recent versions of SunOS, things like "if t" and "set |=" have begun
- X to creep into Mail.rc, which may cause mush to behave oddly. Avoid
- X sourcing $ALT_DEF_RC in Mushrc if this is the case, and consider
- X changing the definition of ALT_DEF_RC in config.h.
- X
- X There is a supplied Mailrc file with mush, but this is only intended to
- X be used as an example of how to make mush look like ucbMail. This is a
- X _reduction_ in functionality and its usage is not encouraged. It is
- X provided for those who wish to "invisibly" replace UCB mail with mush.
- X
- X There is a Gnurc file, also supplied as an example, which can aid in
- X making mush's curses mode appear similar to gnu-emacs (NOT Rmail).
- X
- X The files sample.mushrc and advanced.mushrc are intended as samples of
- X individual users' ~/.mushrc files. There is some overlap from Mushrc
- X in sample.mushrc; in particular, if you use Mushrc as the default file,
- X the sample.mushrc need not source ~/.mailrc.
- X
- ---------------
- Help files:
- X The help files should be placed somewhere which is readable and accessible
- X by all. Failing to do so removes virtually the entire help facility's
- X ability to help anyone. There is a help file (cmd_help) for command help
- X (e.g. "command -?"), and the file tool_help is for the graphics mode (Sun
- X workstations only). You should define where you want these files in
- X config.h so at runtime, they can be accessed without error. If for some
- X reason you can't define a location at run-time, you can change Mushrc
- X to set the variables $cmd_help and $tool_help to the correct locations.
- X
- ---------------
- X
- You should now be able to run make. You may wish to use the target "install"
- to put the mush binary and the help and init files in their proper places; be
- sure to correct the destination directories in the Makefile you have selected,
- and to doublecheck file path names in the init files.
- X
- ---------------
- Maintenance:
- X
- If you want to use dbx or any other debugger, or to use your default tty
- driver, -e should be used as command line argument when you run the program.
- What this flag does is prevents your echo from being turned off and leaving
- cbreak off, thus, keeping your tty in a sane state. This prevents the use
- of mappings and macros (map and map!). However, curses mode will automatic-
- ally disable that mode. The -e flag is highly discouraged.
- X
- If you have memory allocation checking and validation (sun 3.0+ ?) then
- define M_DEBUG in the makefile (main.c) and add the library
- /usr/lib/debug/malloc.o to the library list. Do this only if you
- find bugs in the program and suspect memory allocation errors. main.c
- has the code which sets the debugging level according to the value of
- an environment variable. Because malloc-debugging is so cpu intensive,
- the tool mode program may get a SIGXCPU (cpu time limit exceeded)
- because of the large amount of opening and closing large pixrects and
- devices. For this reason, SIGXPCPU is is caught in main.c.
- X
- The "warning" variable may be set (at runtime in your .mushrc or as
- a command: "set warning") to aid in finding runtime errors that aren't
- fatal. You can also use the "debug" command:
- X debug 1 -- general trace messages
- X debug 3 -- verbose messages, MTA disabled
- X debug 4 -- really verbose messages
- X debug 5 -- free() disabled
- X
- If you ever get "Message N has bad date: <date string>" then note
- the FORMAT of that date and edit dates.c. There are a number of
- "sscanf"s which you can see match known date formats. Use them as
- examples and insert the new date format you have.
- X
- If Mush ever coredumps and you are suspicious about whether or not
- your folder (or spool directory) was removed, or if you were editing
- a letter, you should check for the files .mushXXXXXX and .edXXXXXXX.
- Unless something incredibly awful has happened, Mush won't die without
- asking if you want to save the .mushXXXXX file and if you actually want
- it to dump core. Note that if you run mush from .suntools and there is
- a core dump, it probably wants to do some IO with the console and may
- hang (not exit) because it doesn't know it can't talk to you. If mush
- is killed by SIGHUP, it won't remove the .mushXXXXXX file, but it won't
- tell you about it either (unfortunately).
- X
- Bare-bones line-mode mush (no CURSES) and tool mode (SUNTOOL) pass lint
- with a small number of errors, mostly about long assignments losing accuracy.
- The SysV code has not been linted as thoroughly as the rest. Curses doesn't
- lint very well, but even when you lint mush with CURSES defined, it mainly
- complains about the unused curses globals in curses.h.
- SHAR_EOF
- chmod 0644 README ||
- echo 'restore of README failed'
- Wc_c="`wc -c < 'README'`"
- test 28505 -eq "$Wc_c" ||
- echo 'README: original size 28505, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= README-7.0 ==============
- if test -f 'README-7.0' -a X"$1" != X"-c"; then
- echo 'x - skipping README-7.0 (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting README-7.0 (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'README-7.0' &&
- X
- This is the official release of the Mush port to SunView, referred to in
- alpha and beta versions as "mushview". This file describes most of the
- changes from revision 6.5.6 of "mush" and "mushtool". Sorry, IBM, we
- never managed to get the DOS code integrated. Note that this is version
- 7.0.0, not to be confused (we hope) with alpha-test releases that had a
- third zero appended to the number. Check the dates if you aren't sure.
- X
- Thanks up front to Rich Burridge of Sun Australia for his work on
- converting mush's SunWindows code to SunView, and for giving mush a really
- thorough linting, which it had needed for some time. Thanks also to the
- many alpha and beta testers who sent valuable comments.
- X
- Version 7.0.0 differs from the several 6.5.6 Beta releases in that a
- large portion of the Sun code has changed to use text subwindows instead
- of pixrects. This is a significant enough change in "look and feel" that
- the release number was increased from 6 to 7. Addition of file completion
- to the line/curses modes is also considered a major improvement, as are
- changes to the "mail" command (described below).
- X
- Tool mode changes include:
- X * The message display window is a textsw, with scrollbars.
- X * The composition window is also a textsw, and opens in a separate
- X frame, so you can read messages in the main frame while composing.
- X You can still invoke an editor, and the default window size is
- X such that vi no longer gets confused (as far as we can tell).
- X * There are variables to control the sizes of most subwindows.
- X * Header-editing works in tool mode (in fact, you MUST use it).
- X * Help, options, and alias settings also pop up in their own frames.
- X The help descriptions have been improved (we believe).
- X * Interactive function-key binding is no longer supported; the clash
- X of mush function keys with SunView functions has been eliminated.
- X * The list of folders in your folder directory is made into a
- X walking menu. (Handling of this may improve in future patches.)
- X
- In addition to the SunView conversions and linting, which make up the bulk
- of the changes, there have been a number of bug fixes and enhancements to
- the 6.5.6 baseline. These include:
- X
- mush -h file
- mush -U -h file
- mush -U! -h file
- X The new -h (-draft) options allows mush to read in a prepared message
- X for sending, in the same manner as Rnmail. The specified file must
- X contain the message headers (either when first read or after editing
- X by the user); mush will not add headers to it. The intended use of
- X this option is to write a partially finished message to a file and
- X then return to it later. (See commentary below on "mail -h".) The
- X new -U (-send) option allows the draft file to be sent immediately
- X without editing (-U means "unedited"). Signatures and fortunes are
- X not appended when -U! is used ("unsigned" as well as unedited).
- X
- mush -I file
- mush -I! file
- X The new -I (-init) option allows the user to specify an init file that
- X is read before any of the other init files. -I! causes the specified
- X file to replace the system Mushrc file; otherwise, the given file and
- X the system Mushrc are both read. -I has no effect on reading of the
- X user's own $HOME/.mushrc file (except that the indicated file could
- X "setenv MAILRC", thus changing the location of the user's file).
- X
- mush -n
- mush -n!
- X The first form of this option now works like the ucbMail -n option,
- X that is, it prevents sourcing of the system Mushrc but the user's own
- X $HOME/.mushrc is still read. The new -n! variation prevents either
- X file from being sourced, which was the old behavior of -n. Using -n
- X does not change the effect of -I, so the following are equivalent:
- X mush -n -I file mush -I! file
- X
- cd
- X The cdpath variable now works correctly when specified with either
- X colons or spaces separating the list of directories.
- X
- help
- X The help facility has been expanded; there is now a help file entry
- X consisting of a usage line and short explanation for every documented
- X line-mode command except "debug" and "version", all accessible via
- X "? command" or "command -?". In addition, there are variables:
- X set cmd_help = path Give new location for cmd_help file
- X set tool_help = path Give new location for tool_help file
- X These variables, which can be set in the system or user init files,
- X have replaced the old -1 and -2 startup options, i.e. cmd_help and
- X tool_help can no longer be specified on the mush command line.
- X
- mail -E
- mail -h file
- mail -H file
- mail -I
- mail -u
- mail -U -h file
- X The new "-h file" option of the mail command corresponds to the -h
- X option of mush itself, and is intended for reading in previously
- X begun letters. It implies -E (edit_hdrs). The previous meaning of
- X -h (include and indent a message with its headers) is now supported
- X by the -I option, corresponding to the ~I escape (see below). The
- X -H option is analogous to -h, except that the file need not contain
- X message headers (edit_hdrs is not implied). (Some alpha versions
- X used -H for the function now supplied by -I.)
- X The -E option no longer implies autoedit.
- X The new -u option turns off autosign and fortune. Most useful
- X with "-h file" when you want to continue editing the draft but a
- X signature or fortune has already been appended; but -h is not
- X required for -u. The new -U option sends the file immediately; it
- X cannot be used without -h or -H, and will be ignored if no To:
- X address has been specified.
- X Also, the user is no longer required to provide a To: address in
- X order to begin composing a letter (one is still required before
- X sending it), and the To: address may be only files and/or pipes if
- X desired (in which case the MTA is not run).
- SHAR_EOF
- true || echo 'restore of README-7.0 failed'
- fi
- echo 'End of part 1'
- echo 'File README-7.0 is continued in part 2'
- echo 2 > _shar_seq_.tmp
- exit 0
- exit 0 # Just in case...
- --
- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM
- Sterling Software, IMD UUCP: uunet!sparky!kent
- Phone: (402) 291-8300 FAX: (402) 291-4362
- Please send comp.sources.misc-related mail to kent@uunet.uu.net.
-